             package com.java.diagnostics.visualizer.recommender;
             
             import com.java.diagnostics.visualizer.data.AggregateData;
             import com.java.diagnostics.visualizer.data.TupleData;
             import com.java.diagnostics.visualizer.data.axes.Axis;
             import com.java.diagnostics.visualizer.data.axes.XDataAxis;
             import com.java.diagnostics.visualizer.data.axes.YDataAxis;
             import com.java.diagnostics.visualizer.gc.recommender.RecommendationPreferenceHelper;
             import com.java.diagnostics.visualizer.recommender.util.RecommendationLabels;
             import java.text.MessageFormat;
             
             public class ConsiderFinalizers
               extends RecommendationBase
               implements Recommendation
             {
               public void recommend(AggregateData data)
               {
                 Object gcMode = getGCMode(data);
                 if (!"balanced".equals(gcMode)) {
                   TupleData fragmentation = data
                     .getTupleData("VGCLabels.objects.queued.for.finalization");
                   if ((fragmentation != null) && (!fragmentation.isEmpty())) {
                     double maxQueue = fragmentation.getRawMaxY();
                     String baseUnits = fragmentation.getXAxis().getAxis()
                       .getBaseUnitName();
                     
                     if (maxQueue > this.helper.getFinalizerQueueThreshold()) {
                       String comment = MessageFormat.format(
                         RecommendationLabels.FINALIZER_WARNING, 
                         new Object[] {fragmentation.getYAxis()
                         .formatUnconverted(
                         fragmentation.getRawMaxY(), 
                         baseUnits) });
                       addWarning(data, comment);
                     }
                   }
                 }
               }
             }


